package com.feihao.zhou.demo03;

import java.util.ArrayList;
import java.util.stream.Stream;

public class TestStream {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("rrr");
        list.add("eee");
        list.add("eee");
        list.add("rqqrr");
        list.add("啥是啥");

        //获得流
        Stream<String> stream = list.stream();
        //中间方法:过滤：
        System.out.println("-------------获取首字母为r的流------------------");
        Stream<String> stringStream = stream.filter(s -> s.startsWith("r"));
//        获得过滤首字母为r的流
        stringStream.forEach(s -> System.out.println(s));


        System.out.println("-------------截取前面3个元素后的流------------------");

        //中间 方法：limit():截取流前面对于参数个数的元素：
        Stream<String> stream2 = list.stream();
        Stream<String> limit = stream2.limit(3);
        limit.forEach(s -> System.out.println(s));

        System.out.println("-------------跳过前面2个元素后的流------------------");
        //方法：skip()  :跳过指定个数的元素，获取后面的元素：
        Stream<String> stream3 = list.stream();
        Stream<String> skip = stream3.skip(2);
        //终结方法：
        long count = skip.count();
        System.out.println("跳过后的元素个数为：" + count);

        //此处会报错！！！！使用终结方法后，就不能再操作流了
//        stream3.forEach(s -> System.out.println(s));


        System.out.println("-------------连接两个一样的流------------------");
        //concat方法：
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("rrr");
        list2.add("eee");
        ArrayList<String> list3 = new ArrayList<>();
        list3.add("rrr");
        list3.add("eee");
        Stream.concat(list3.stream(), list2.stream()).forEach(System.out::println);


        System.out.println("-------------取出重复后的流------------------");
        //distinct()  :取出流中重复的元素：
        Stream.concat(list2.stream(),list3.stream()).distinct().forEach(System.out::println);

        double a = 1.0;
        double b = 0.0;

        double c = a/b;
        System.out.println(c);

        System.out.println(4.0-3.0);
    }
}
